
module beep_control(
    input sys_clk,
    input sys_rst,
    
    input key_pressed_flag,
    input key_value,
    
    output reg beep
);

reg [31:0] beep_on_timer;
reg  [1:0] beep_on_flag;

always @(posedge sys_clk or negedge sys_rst) begin
    if (!sys_rst)   begin
        beep_on_timer <= 1'b0;
        
    end
    else if (beep_on_flag == 1'b1 && beep_on_timer < 32'd50000000)           //蜂鸣器定时器加1
        beep_on_timer <= beep_on_timer + 1'b1;
    else                                                                 //蜂鸣器响时间到,关闭蜂鸣器
        beep_on_timer <= 1'b0;
    
end



always @(posedge sys_clk or negedge sys_rst) begin
    if (!sys_rst)   begin
        beep <= 1'b1;
        beep_on_flag <= 1'b0;
    end
    else if (beep_on_timer == 32'd50000000) begin                            //蜂鸣器响时间到，关闭蜂鸣器
        beep <= 1'b1;
        beep_on_flag <= 1'b0;
    end
    else if (key_pressed_flag && key_value != 0  )    begin              //有按键按下
        if (!beep_on_flag) begin
            beep <= 1'b0;                                                  //打开蜂鸣器
            beep_on_flag <= 1'b1;
        end
    end
    else
        beep <= 1'b1;
end

endmodule